import router from "@/router/index";
// import { Message } from "element-ui";
import { Route } from "vue-router";
import { UserModule } from "@/store/modules/user";

const whiteList = ["/login"];
/* 全局路由拦截器，每个页面都会调用
 to: Route: 即将要进入的目标 路由对象
 from: Route: 当前导航正要离开的路由
 next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。 */
class LoginAuthGuard{ //登录鉴权守卫
  static wantTo="/"
  static count=0 //页面跳转次数 0为首次加载
  static statistics=async(to: Route, from: Route, next: Function) => {
    // 统计
    LoginAuthGuard.count++ 
    console.log("执行次数",LoginAuthGuard.count)
  }
  // static menuGuard=async(to: Route, from: Route, next: Function) => {
    // 不能在全局路由守卫首次添加路由 路由已经完成匹配了
  //   console.log("用户模块数据",UserModule.loginInfo?.roleFrontAuthInfo)
  //   if (UserModule.loginInfo&&UserModule.loginInfo.roleFrontAuthInfo&&LoginAuthGuard.count==0) {
  //     // 有没权限菜单信息并且首次加载
  //     // let menus =UserModule.loginInfo.roleFrontAuthInfo.menus
  //     // let userType = UserModule.loginInfo.roleType
  //     UserModule.AddAllRoutes()
  //   }
  // }

  static authGuard=async(to: Route, from: Route, next: Function) => {
    let menus= UserModule.loginInfo?.roleFrontAuthInfo.menus
    if (UserModule.loginInfo) {
      // 有登录信息并没过期
      if (to.path === '/login') {
        // 如果想去登录直接跳主页面
        next({ path: '/' })
      } else {
        // 如果不是去登录页判断权限 （现在不用因为没权限的没有菜单）
        console.log("to",to)
        next()
      }
    } else {//没有登录信息
     
      if (whiteList.indexOf(to.path) !== -1) {
        next()
      } else {
        LoginAuthGuard.wantTo=to.path
        next(`/login`)
      }
    }
  }

}

router.beforeEach(async(to: Route, from: Route, next: Function) => {
  // await LoginAuthGuard.menuGuard(to,from,next)
  await LoginAuthGuard.statistics(to,from,next)
  await LoginAuthGuard.authGuard(to,from,next)
})


router.afterEach((to: Route) => {
  document.title = to.meta.title;
});
